<?php

require_once(BaseConfig::LoadClass('estadisticas.class.php'  ));
require_once(BaseConfig::LoadClass('tablas_llenado.class.php'));

class PAIDEA_Eje3_Titulacion2AniosDespues extends Estadisticas {
  var $strNombreBase;
  
  function PAIDEA_Eje3_Titulacion2AniosDespues($strNombreBase) {
    $this->strNombreBase = $strNombreBase;
  }
  
  function __GetConectaObject() {
    $oConecta = new ConectaP("", $this->strNombreBase);
    return $oConecta;
  }
  
  function IncluirHTMLDespues() {
    return TablasLlenado::__TemplateSeleccionCarrera($this->strNombreBase, Variables::GetOption('generaciones'), 1, count($this->arrInfoReporte), $this->__ObtenerFormaOpcionesGrafica(false, false, true));
  }
  
  function __ArreglarDatosPrevioPDF($arrReporte) {
    $this->arrInfoReporte["titulados"]["Nombre"] = "# de Alumnos Titulados en no mas de 2 anios despues de egresar";
    return $arrReporte;
  }
  
  function __DoReporteTCPDF($arrReporte) {
    $oReportePDF = new ReportePDF($this, $arrReporte, "L");
    
    return $oReportePDF->DoRender();
  }
  
  function __DefaultArregloInfo() {
    $arrResp = array();
    
    $arrResp["generacion"]["Nombre"] = "Generacion";
    $arrResp["generacion"]["Tipo"  ] = "C";
    $arrResp["total_gen" ]["Nombre"] = "# de alumnos";
    $arrResp["total_gen" ]["Tipo"  ] = "I";
    $arrResp["egresados" ]["Nombre"] = "# de Alumnos Egresados";
    $arrResp["egresados" ]["Tipo"  ] = "I";
    $arrResp["titulados" ]["Nombre"] = "# de Alumnos Titulados<br />en no mas de 2 anios<br />despues de egresar";
    $arrResp["titulados" ]["Tipo"  ] = "I";
    
    return $arrResp;
  }
  
  function __DefaultConsultaIni() {
    $strConsulta  = "";
    $strConsulta .= "SELECT COUNT(*) AS total_gen, generacion ";
    $strConsulta .= "FROM view_estadisticas_egresados ";
    if(is_array(Variables::GetOption('generaciones'))) {
      $strConsulta .= "WHERE generacion IN(" . join(", ", Variables::GetOption('generaciones')) . ") ";
    } else {
      $strConsulta .= "WHERE generacion = -1 ";
    }
    $strConsulta .= "GROUP BY generacion ";
    $strConsulta .= "ORDER BY generacion ";
    return $strConsulta;
  }
  
  function InitDefaults($strNombreReporte = "", $strOpAgrupar = "") {
    if(!$strNombreReporte) {
      $arrCarreras = TablasLlenado::GetArrayNombresCarreras();
      if($this->strNombreBase) {
        $strNombreReporte = "Titulacion hasta en Dos Anios despues de egresar para " . $arrCarreras[$this->strNombreBase];
      } else {
        $strNombreReporte = "Titulacion hasta en Dos Anios despues de egresar";
      }
    }
    $this->Inicializar($strNombreReporte, $this->__DefaultArregloInfo(), $this->__DefaultConsultaIni(), $strOpAgrupar, $this->__DefaultDifHeader(), $this->__DefaultDifColors());
  }
  
  function ManejarReporte($arrReporte) {
    // Lo primero que necesitamos es la conexion a la base de datos
    $oConecta = $this->__GetConectaObject();
    
    $intContador = 0;
    
//    foreach(Variables::GetOption('generaciones') as $strGenAct) {
    foreach($arrReporte as $arrInfoLineaRep) {
      $strGenAct = $arrInfoLineaRep["generacion"];
      // Luego necesitamos obtener los alumnos totales
      $strConsulta  = "";
      $strConsulta .= "SELECT ";
      $strConsulta .= "  COUNT(*) AS totales ";
      $strConsulta .= "FROM view_estadisticas_egresados ";
      $strConsulta .= "WHERE generacion = $strGenAct ";
      $strConsulta .= "  AND egresado = 't' ";

      $oConecta->Consulta($strConsulta);
      $intTotalEgresados = $oConecta->Field('totales');

      $strConsulta  = "";
      $strConsulta .= "SELECT * ";
      $strConsulta .= "FROM titulados ";
      $strConsulta .= "WHERE generacion = $strGenAct ";
      $oConecta->Consulta($strConsulta);
      $intTitulados = 0;
      while(!$oConecta->EOF) {
        $strAnioSal = substr($oConecta->Field('anio_egreso'), 0, 4);
        $strPerSal  = substr($oConecta->Field('anio_egreso'), 4, 1);
        if($strPerSal == "1") {
          $strMaxTime = ($strAnioSal + 1) . "-12-31";
        } else {
          $strMaxTime = ($strAnioSal + 2) . "-06-30";
        }
        
        $unxFechaMax = strtotime($strMaxTime);
        $unxFechaAct = strtotime($oConecta->Field('fecha_examen'));
        
        if($unxFechaMax > $unxFechaAct) {
          $intTitulados++;
        }
        
        $oConecta->MoveNext();
      }

      $arrReporte[$intContador]["egresados"] = $intTotalEgresados;
      $arrReporte[$intContador]["titulados"] = $intTitulados;

      $intContador++;
    }
    
    return $arrReporte;
  }
}

?>